約 2,912,966 件
https://w.atwiki.jp/psmovie/pages/339.html
Indian 3rd Indian 3rd 主催: 編集: 公開日:2015/03/21 出演者
https://w.atwiki.jp/sampleisbest/pages/520.html
開発環境 Microsoft Visual Studio Community 2017 実行環境 Microsoft Windows 10 Home (64-bit) プロジェクトの種類 Visual C++ / 空のプロジェクト プロジェクト名 waveloop3 waveloop3.cpp // プロジェクトのプロパティ // Unicode文字セット #pragma comment(lib, "winmm") #include Windows.h #include wchar.h #include vector #include "Resource.h" using namespace std; typedef struct { int msec; int freq; } Sequence; #define SAMPLE_RATE 44100 #define BUFFERS 2 #define BUF_LEN 2048 #define TIMEBASE 24 // 関数プロトタイプ宣言 void Trace(LPCWSTR format, ...); INT_PTR CALLBACK MainDlg(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); void Init(); void Timer(HWND hDlg); void GenerateWaveForm(LPWAVEHDR pwh); void Play(HWND hDlg); void Stop(HWND hDlg); void SetFreq(int freq); // グローバル変数 HWAVEOUT hwo = NULL; WAVEHDR wh[BUFFERS]; BYTE waveform[BUFFERS][BUF_LEN]; bool playing = false; int wavefreq; int phase; vector Sequence seq; int nseq; DWORD start; int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) { DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAINDLG), NULL, MainDlg); return 0; } void Trace(LPCWSTR format, ...) { va_list arg_ptr; WCHAR buffer[256]; va_start(arg_ptr, format); int size = _vsnwprintf_s(buffer, _TRUNCATE, format, arg_ptr); va_end(arg_ptr); OutputDebugString(buffer); } INT_PTR CALLBACK MainDlg(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { INT_PTR ret = TRUE;// メッセージを処理した switch (message) { case MM_WOM_DONE if (playing) { Timer(hDlg); GenerateWaveForm((LPWAVEHDR)lParam); } break; //case MM_WOM_OPEN //case MM_WOM_CLOSE case WM_COMMAND switch (LOWORD(wParam)) { case IDC_PLAY Play(hDlg); break; case IDC_STOP Stop(hDlg); break; case IDCANCEL EndDialog(hDlg, IDCANCEL); break; } break; case WM_INITDIALOG Init(); ret = TRUE;// SetFocusでフォーカスを設定した場合はFALSE break; case WM_CLOSE Stop(hDlg); ret = FALSE; break; default ret = FALSE;// メッセージを処理しなかった } return ret; } void Init() { int tempo = 120; int notes[] = { 60, 24, 62, 24, 64, 24, 65, 24, 64, 24, 62, 24, 60, 24, 0, 24, }; Sequence s; int elapse = 100;// wait for (int i = 0; i _countof(notes); i += 2) { int gate = (int)((notes[i + 1] / (double)TIMEBASE) * (60.0 / tempo) * 1000); s.msec = elapse; s.freq = (notes[i] == 0) ? 0 (int)(440 * pow(2, (notes[i] - 69) / 12.0)); seq.push_back(s); elapse += gate; } s.msec = elapse; s.freq = 0; seq.push_back(s); } void Timer(HWND hDlg) { int dur = (int)(GetTickCount() - start); if (seq[nseq].msec = dur) { SetFreq(seq[nseq].freq); nseq++; if ((int)(seq.size()) = nseq) Stop(hDlg); } } void GenerateWaveForm(LPWAVEHDR pwh) { LPBYTE data = (LPBYTE)(pwh- lpData); for (int i = 0; i BUF_LEN; i++) { phase += wavefreq; if (SAMPLE_RATE = phase) phase -= SAMPLE_RATE; double t = phase / (double)SAMPLE_RATE; data[i] = 128 + (t 0.5 ? 1 -1) * 10; } waveOutWrite(hwo, pwh, sizeof WAVEHDR); } //// void Play(HWND hDlg) { Trace(L"Play()\n"); EnableWindow(GetDlgItem(hDlg, IDC_PLAY), FALSE); playing = true; SetFreq(0); nseq = 0; start = GetTickCount(); MMRESULT mmr; WAVEFORMATEX wfx; wfx.wFormatTag = WAVE_FORMAT_PCM; wfx.nChannels = 1; wfx.nSamplesPerSec = SAMPLE_RATE; wfx.nAvgBytesPerSec = SAMPLE_RATE; wfx.nBlockAlign = 1; wfx.wBitsPerSample = 8; wfx.cbSize = 0; mmr = waveOutOpen( hwo, WAVE_MAPPER, wfx, (DWORD_PTR)hDlg, NULL, CALLBACK_WINDOW); Trace(L"waveOutOpen %u\n", mmr); for (int i = 0; i BUFFERS; i++) { LPWAVEHDR pwh = wh + i; pwh- lpData = (LPSTR)(waveform[i]); pwh- dwBufferLength = BUF_LEN; pwh- dwFlags = 0; mmr = waveOutPrepareHeader(hwo, pwh, sizeof WAVEHDR); Trace(L"waveOutPrepareHeader %d %u\n", i, mmr); GenerateWaveForm(pwh); } } void Stop(HWND hDlg) { Trace(L"Stop()\n"); EnableWindow(GetDlgItem(hDlg, IDC_PLAY), TRUE); playing = false; if (hwo) { MMRESULT mmr; mmr = waveOutReset(hwo); Trace(L"waveOutReset %u\n", mmr); for (int i = 0; i BUFFERS; i++) { mmr = waveOutUnprepareHeader(hwo, wh + i, sizeof WAVEHDR); Trace(L"waveOutUnprepareHeader %d %u\n", i, mmr); } mmr = waveOutClose(hwo); Trace(L"waveOutClose %u\n", mmr); hwo = NULL; } } void SetFreq(int freq) { wavefreq = freq; phase = 0; } Resource.h #define IDD_MAINDLG100 //#define IDT_TIMER101 #define IDC_STATIC-1 #define IDC_PLAY1000 #define IDC_STOP1001 waveloop3.rc // resource script #include windows.h #include "resource.h" IDD_MAINDLG DIALOGEX 100, 100, 320, 200 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_APPWINDOW CAPTION "waveloop3" FONT 9, "MS UI Gothic" BEGIN PUSHBUTTON"Play( P)", IDC_PLAY, 10, 10, 50, 15 PUSHBUTTON"Stop( S)", IDC_STOP, 70, 10, 50, 15 END
https://w.atwiki.jp/sampleisbest/pages/136.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 コンソール アプリケーション プロジェクト名 mixer アプリケーションの種類 コンソール アプリケーション 追加のオプション 空のプロジェクト 参考 ミキサー その1(音量の調節) VALGUS - フリーソフト mixer.c #pragma comment(lib, "winmm.lib") #include locale.h #include stdio.h #include Windows.h int main() { UINT uNumDevs; UINT uMxId; HMIXER hmx; MIXERCAPS mxcaps; MIXERLINE mxl; MIXERCONTROL mxctrl; MIXERLINECONTROLS mxlc; MIXERCONTROLDETAILS mxcd; MIXERCONTROLDETAILS_UNSIGNED mxcdVolume; MMRESULT mr; _wsetlocale(LC_CTYPE, L""); // ミキサーデバイスの数 uNumDevs = mixerGetNumDevs(); wprintf(L"uNumDevs=[%u]\n", uNumDevs); for (uMxId = 0; uMxId uNumDevs; uMxId++) { wprintf(L"uMxId=[%u]\n", uMxId); // ミキサーデバイス能力 mr = mixerGetDevCaps(uMxId, mxcaps, sizeof (MIXERCAPS)); wprintf(L"mxcaps.szPname=[%s]\n", mxcaps.szPname); wprintf(L"mxcaps.cDestinations=[%u]\n", mxcaps.cDestinations); // ミキサーデバイス mr = mixerOpen( hmx, uMxId, (DWORD_PTR)NULL, 0, MIXER_OBJECTF_MIXER); if (mr != MMSYSERR_NOERROR) { return 1; } // スピーカー mxl.cbStruct= sizeof (MIXERLINE); mxl.dwComponentType= MIXERLINE_COMPONENTTYPE_DST_SPEAKERS; mr = mixerGetLineInfo((HMIXEROBJ)hmx, mxl, MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE); wprintf(L"mxl.dwLineID=[%x]\n", mxl.dwLineID); wprintf(L"mxl.dwComponentType=[%u]\n", mxl.dwComponentType); wprintf(L"mxl.cChannels=[%u]\n", mxl.cChannels); wprintf(L"mxl.cConnections=[%u]\n", mxl.cConnections); wprintf(L"mxl.cControls=[%u]\n", mxl.cControls); wprintf(L"mxl.szName=[%s]\n", mxl.szName); // マスターボリュームID mxlc.cbStruct= sizeof (MIXERLINECONTROLS); mxlc.dwLineID= mxl.dwLineID; mxlc.dwControlType= MIXERCONTROL_CONTROLTYPE_VOLUME; mxlc.cControls= 1; mxlc.cbmxctrl= sizeof (MIXERCONTROL); mxlc.pamxctrl= mxctrl; mr = mixerGetLineControls((HMIXEROBJ)hmx, mxlc, MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE); wprintf(L"mxctrl.szName=[%s]\n", mxctrl.szName); wprintf(L"mxctrl.Bounds.dwMinimum=[%u]\n", mxctrl.Bounds.dwMinimum); wprintf(L"mxctrl.Bounds.dwMaximum=[%u]\n", mxctrl.Bounds.dwMaximum); wprintf(L"mxctrl.dwControlID=[%u]\n", mxctrl.dwControlID); // 現在の音量 mxcd.cbStruct= sizeof (MIXERCONTROLDETAILS); mxcd.dwControlID= mxctrl.dwControlID; mxcd.cChannels= 1; mxcd.cMultipleItems= 0; mxcd.cbDetails= sizeof (MIXERCONTROLDETAILS_UNSIGNED); mxcd.paDetails= mxcdVolume; mr = mixerGetControlDetails((HMIXEROBJ)hmx, mxcd, MIXER_OBJECTF_HMIXER | MIXER_GETCONTROLDETAILSF_VALUE); wprintf(L"mxcdVolume.dwValue=[%u]\n", mxcdVolume.dwValue); mr = mixerClose(hmx); } return 0; } 出力 uNumDevs=[2] uMxId=[0] mxcaps.szPname=[SB X-Fi Audio [BC00]] mxcaps.cDestinations=[2] mxl.dwLineID=[ffff0000] mxl.dwComponentType=[4] mxl.cChannels=[8] mxl.cConnections=[8] mxl.cControls=[4] mxl.szName=[プレイ コントロール] mxctrl.szName=[音量] mxctrl.Bounds.dwMinimum=[0] mxctrl.Bounds.dwMaximum=[65535] mxctrl.dwControlID=[1] mxcdVolume.dwValue=[65535] uMxId=[1] mxcaps.szPname=[SoundMAX HD Audio] mxcaps.cDestinations=[3] mxl.dwLineID=[ffff0000] mxl.dwComponentType=[4] mxl.cChannels=[8] mxl.cConnections=[9] mxl.cControls=[4] mxl.szName=[マスタ音量] mxctrl.szName=[マスタ音量] mxctrl.Bounds.dwMinimum=[0] mxctrl.Bounds.dwMaximum=[65535] mxctrl.dwControlID=[1] mxcdVolume.dwValue=[32845]
https://w.atwiki.jp/enjoy1ng/pages/25.html
BIG MAGNUM.30CM か、かっけーo(TヘTo) カスタム - - 真珠内蔵型バレル 精密トリガー 赤マムシドリンク バイ〇グラ
https://w.atwiki.jp/ohden/pages/353.html
文字コード関係まとめ Unicode 表記 Microsoftコードページ 文字集合と符号化方式 S-JIS CP932 マイクロソフト標準キャラクタセットをシフト符号化表現 JIS CP50220 マイクロソフト標準キャラクタセットをRFC1468符号化表現 EUC CP51932 マイクロソフト標準キャラクタセットをGR表現 Unicode(UTF-16LE) CP1200 UnicodeをUTF-16(LittleEndian)で符号化 UnicodeBE(Big-Endian) CP1201 UnicodeをUTF-16(BigEndian)で符号化 UTF-8 CP65001 UnicodeをUTF-8で符号化 『\u』『%u』って書いてあるのはUnicodeBE? http //www.syboos.jp/java/doc/EscapeString.html 更新日: 2011年10月13日 (木) 16時03分54秒 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/sampleisbest/pages/150.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 コンソール アプリケーション プロジェクト名 readtrack アプリケーションの種類 コンソール アプリケーション 追加のオプション 空のプロジェクト 文字セット Unicode Windows Driver Kit Version 7.1.0 参考 データの取得 readtrack.cpp /* [構成プロパティ]-[VC++ ディレクトリ]-[インクルード ディレクトリ] C \WinDDK\7600.16385.1\src\storage\tools\spti Unicode文字セット */ #include Windows.h #include tchar.h #include locale.h #include stddef.h #include stdio.h #include ntddscsi.h #include spti.h #define REVWORD(w) (((w 8) 0xff00)|((w 8) 0xff)) #define REVDWORD(dw) (((dw 24) 0xff000000)|((dw 8) 0xff0000)|((dw 8) 0xff00)|((dw 24) 0xff)) struct READTOC { WORD wLen; BYTE byStartTrack; BYTE byEndTrack; struct TRACKDESC { BYTE d0; BYTE data; BYTE byTrack; BYTE d1; DWORD dwLBA; } td[100]; }; // 関数プロトタイプ宣言 int ReadTrack(TCHAR cDrv, UINT uTrack, LPCTSTR pszFile); DWORD ExecCommand( HANDLE hDev,// デバイスハンドル PUCHAR pucCdb,// コマンド(SCSI command descriptor block) UCHAR ucCdbLen,// コマンドの長さ PVOID pvData,// バッファ ULONG ulDataLen);// バッファの長さ int WriteWaveHeader(FILE *pFile, DWORD dwSampleLen); //============================================================================== int _tmain(int argc, LPTSTR argv[]) { TCHAR szDrv[] = _T("@ \\"); UINT ur; _tsetlocale(LC_CTYPE, _T("")); if (argc != 4) { _ftprintf(stderr, _T("usage readtrack drive track file\n")); return 1; } szDrv[0] = argv[1][0]; ur = GetDriveType(szDrv); if (ur != DRIVE_CDROM) { _ftprintf(stderr, _T("CD-ROMドライブではありません。\n")); return 1; } ReadTrack(szDrv[0], _ttoi(argv[2]), argv[3]); return 0; } //------------------------------------------------------------------------------ #define CDDASECT 2352 #define READSECT 15 int ReadTrack(TCHAR cDrv, UINT uTrack, LPCTSTR pszFile) { int nRet = -1;// 失敗 // デバイスのオープン TCHAR szDev[] = _T("\\\\.\\@ "); HANDLE hDev; BOOL br; szDev[4] = cDrv; hDev = CreateFile(szDev, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); if (hDev == INVALID_HANDLE_VALUE) { return nRet; } // TOCの読み込み BYTE byBuf[sizeof (READTOC) + 0xf];// パラグラフ境界 READTOC *ptoc = (READTOC *)(((UINT_PTR)byBuf + 0xf) ~0xf); UCHAR ucCdb[16]; DWORD dw; ZeroMemory(ptoc, sizeof *ptoc); ZeroMemory(ucCdb, sizeof ucCdb); ucCdb[0] = SCSIOP_READ_TOC; ucCdb[6] = 1; *(PWORD)(ucCdb + 7) = REVWORD(sizeof *ptoc); dw = ExecCommand(hDev, ucCdb, 10, ptoc, sizeof *ptoc); if (dw == 0) { goto Exit; } // トラックチェック if (uTrack 1 || ptoc- byEndTrack uTrack) { goto Exit; } if (ptoc- td[uTrack-1].data 0x04) {// データトラック goto Exit; } // ファイルのオープン FILE *pFile = NULL; errno_t er = _tfopen_s( pFile, pszFile, _T("wb")); if (er != 0) { goto Exit; } // トラックLBA DWORD dwStartAddr = REVDWORD(ptoc- td[uTrack-1].dwLBA); DWORD dwEndAddr = REVDWORD(ptoc- td[uTrack].dwLBA); DWORD dwLen = dwEndAddr - dwStartAddr; _tprintf(_T("Track %u, LBA %u-%u, Len %u\n"), uTrack, dwStartAddr, dwEndAddr, dwLen); WriteWaveHeader(pFile, CDDASECT * dwLen); // バッファ BYTE byBuf2[CDDASECT * READSECT + 0xf];// パラグラフ境界 PBYTE pbyBuf = (PBYTE)(((UINT_PTR)byBuf2 + 0xf) ~0xf); ZeroMemory(pbyBuf, CDDASECT * READSECT); ZeroMemory(ucCdb, sizeof ucCdb); ucCdb[0] = 0xbe;// SCSIOP_READ_CD ucCdb[9] = 16;// コマンド長 for (DWORD dwLBA = dwStartAddr; dwLBA dwEndAddr; ) { DWORD dwReadSize; if (dwEndAddr dwLBA + READSECT) { dwReadSize = dwEndAddr - dwLBA; } else { dwReadSize = READSECT; } *(PDWORD)(ucCdb + 2) = REVDWORD(dwLBA); ucCdb[8] = (UCHAR)dwReadSize; dw = ExecCommand(hDev, ucCdb, 12, pbyBuf, CDDASECT * READSECT); if (dw == 0) { goto Exit; } fwrite(pbyBuf, sizeof (BYTE), CDDASECT * dwReadSize, pFile); dwLBA += dwReadSize; _tprintf(_T("\r%6u/%6u"), dwLBA, dwEndAddr); } nRet = 0;// 成功 Exit if (pFile) { int nr = fclose(pFile); } br = CloseHandle(hDev); return nRet; } //------------------------------------------------------------------------------ DWORD ExecCommand( HANDLE hDev,// デバイスハンドル PUCHAR pucCdb,// コマンド(SCSI command descriptor block) UCHAR ucCdbLen,// コマンドの長さ PVOID pvData,// バッファ ULONG ulDataLen)// バッファの長さ { SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER swb; DWORD dwRet; BOOL br; ZeroMemory( swb, sizeof swb); swb.sptd.Length= sizeof swb.sptd; // swb.sptd.CdbLength= ucCdbLen; swb.sptd.SenseInfoLength= sizeof swb.ucSenseBuf; swb.sptd.DataIn= SCSI_IOCTL_DATA_IN; swb.sptd.DataTransferLength= ulDataLen; swb.sptd.TimeOutValue= 10;// 秒 swb.sptd.DataBuffer= pvData; swb.sptd.SenseInfoOffset = offsetof(SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER, ucSenseBuf); memcpy_s( swb.sptd.Cdb, sizeof swb.sptd.Cdb, pucCdb, ucCdbLen); br = DeviceIoControl( hDev, IOCTL_SCSI_PASS_THROUGH_DIRECT, swb, sizeof swb, swb, sizeof swb, dwRet, NULL); if (br == FALSE) { return 0; } return dwRet; } //------------------------------------------------------------------------------ int WriteWaveHeader(FILE *pFile, DWORD dwSampleLen) { WAVEFORMATEX wf; DWORD dw; wf.wFormatTag= WAVE_FORMAT_PCM; wf.nChannels= 2; wf.nSamplesPerSec= 44100; wf.nAvgBytesPerSec= 44100 * 2 * 2; wf.nBlockAlign= 2 * 2;// 16bit 2ch wf.wBitsPerSample= 16; wf.cbSize= 0; fwrite("RIFF", sizeof (BYTE), 4, pFile); dw = 4 + 8 + sizeof (WAVEFORMATEX) + 12 + 8 + dwSampleLen; fwrite( dw, sizeof (DWORD), 1, pFile);// RIFFチャンクサイズ fwrite("WAVE", sizeof (BYTE), 4, pFile); fwrite("fmt ", sizeof (BYTE), 4, pFile); dw = sizeof (WAVEFORMATEX); fwrite( dw, sizeof (DWORD), 1, pFile);// fmtチャンクサイズ fwrite( wf, sizeof (WAVEFORMATEX), 1, pFile); fwrite("fact", sizeof (BYTE), 4, pFile); dw = sizeof (DWORD); fwrite( dw, sizeof (DWORD), 1, pFile);// factチャンクサイズ fwrite( dwSampleLen, sizeof (DWORD), 1, pFile); fwrite("data", sizeof (BYTE), 4, pFile); fwrite( dwSampleLen, sizeof (DWORD), 1, pFile);// dataチャンクサイズ return 0; } 出力 C \projects\vc++\readtrack\Debug readtrack e 2 track02.wav Track 2, LBA 5412-34540, Len 29128 34540/ 34540
https://w.atwiki.jp/gachmuch/pages/1258.html
[Foxxx]盛り上がってくぜ [Primo]チェックしろよ [Foxxx]どういうことかはわかってんだろ [Primo]マジで [Foxxx]真のアンダーグラウンドヘッズなら今ここで何が起きてるかはわかってるんだろうな、LLクールJなんかとは違うんだぜ、さぁ立ち上がるんだ [Guru]プリモ、用意はいいか? [Guru]みんなでこうしてLを掲げるんだ Big L! Big L! Big L! [Lord Finnese] Lサインを宙に掲げるんだ!今夜はお前らに一晩中そうさせるからな、慣れとけよ 俺の仲間Big Lのために、そうさ [Big L] 俺のゲームプランは知ってるんだろ 俺の仲間の名はCタウン 荷物は持ち込んだりしない、飛行機が着いたら買い物に行く 同じ仲間と今でもツルんでるんだ、昔はケインのファンだった 着るものは全部ブランド品 お前のダイヤは光ってないしチェーンだって空洞だろ クラブに行けば同じボトルで何時間もイキがってるお前 ちびちびとケチな飲み方でな、俺は最もリッチな仲間とツルんでるんだ ムッチリした女達を従え、最も粋なヒットをとばす お前にはLの何もわかってないんだ、疑うのはよせ L抜きのラップゲームなんてどうかしてるぜ ダイヤのないジュエリーみたいなもんさ キリスト抜きの聖書 それともマイケル・ジョーダンのいないシカゴ・ブルズ それかパイプを持たないクラック中毒者 レズビアンのいないヴィレッジみたい それか乱闘のないホッケーの試合 ライムが出来なきゃマイクに触るな 俺のレーベルはフラムボイヤントだ、マザーファッカーめ
https://w.atwiki.jp/gtavi_gta6/pages/1818.html
大型ボート運搬車(Big Boat Trailer) 上記はwiki画像用にMODで出現させた画像。本来はこのように出現させられない 解説 マイケルのストーリーミッション「父と子 」でのみ登場するトレーラー。「マルキー 」を乗せられるほどの巨大さを持つ。 ミッション専用のNPC車両で該当ミッション以外では出現すらしない。無論プレイヤーが牽引する事も不可能。 PC版ではMODで無理やり出現させることが出来るが、ボート運搬車のような機能はなくトレーラーとボートが一体化している車両となっている(正確にはオブジェクト扱いではない)。 特に上部に乗せているマルキーは完全にオブジェクト扱いで、乗ることがおろかミッションでフランクリンが乗り込んだ甲板以外に当たり判定すらない。 また、車体前方にスタンドが存在しない為他のトレーラーのように再接続するには一度前方を無理矢理持ち上げないと不可能である。
https://w.atwiki.jp/sampleisbest/pages/28.html
開発環境 Microsoft Visual Studio Community 2019 / Visual C++ 実行環境 Microsoft Windows 10 Home (64bit) プロジェクト テンプレート Windows デスクトップ ウィザード プロジェクト名 HelloWin アプリケーションの種類 デスクトップ アプリケーション (.exe) 追加のオプション 空のプロジェクト HelloWin.cpp #include Windows.h #define APP_NAME L"HelloWin" LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); void OnPaint(HWND hWnd); int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE, _In_ LPWSTR, _In_ int nCmdShow) { // ウィンドウクラスの登録 WNDCLASSEX wc = { sizeof WNDCLASSEX }; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.hInstance = hInstance; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = HBRUSH(COLOR_WINDOW + 1); wc.lpszClassName = APP_NAME; if (RegisterClassEx( wc) == 0) { return 0; } // ウィンドウの作成 HWND hWnd = CreateWindow( APP_NAME, APP_NAME, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); if (hWnd == NULL) { return 0; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); // メッセージループ MSG msg; while (GetMessage( msg, NULL, 0, 0)) { TranslateMessage( msg); DispatchMessage( msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_PAINT OnPaint(hWnd); break; case WM_DESTROY PostQuitMessage(0); break; default return DefWindowProc(hWnd, uMsg, wParam, lParam); } return 0; } void OnPaint(HWND hWnd) { LPCWSTR pStr = L"hello, world"; PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, ps); TextOut(hdc, 0, 0, pStr, lstrlen(pStr)); EndPaint(hWnd, ps); }
https://w.atwiki.jp/sampleisbest/pages/94.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 プロジェクト プロジェクト名 trace アプリケーションの種類 Windows アプリケーション 追加のオプション 空のプロジェクト 文字セット Unicode 統合開発環境(IDE Integrated Development Environment)からデバッグ開始(F5)すると出力ウィンドウに表示される。 IDEからデバッグなしで開始(Ctrl+F5)、またはIDE以外から実行した場合、DebugViewを使うことにより表示される。 trace.c #include Windows.h #include tchar.h #include malloc.h // 関数プロトタイプ宣言 void Trace(LPCTSTR format, ...); void Trace2(LPCTSTR format, ...); //============================================================================== int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { int cx = GetSystemMetrics(SM_CXSCREEN); int cy = GetSystemMetrics(SM_CYSCREEN); Trace(_T("画面サイズ = %d x %d\n"), cx, cy); Trace2(_T("画面サイズ = %d x %d\n"), cx, cy); return 0; } //------------------------------------------------------------------------------ void Trace(LPCTSTR format, ...) { va_list arg_ptr; TCHAR buffer[256]; int size; va_start(arg_ptr, format); size = _vsntprintf_s(buffer, _countof(buffer), _TRUNCATE, format, arg_ptr); va_end(arg_ptr); OutputDebugString(buffer); if (size 0) { OutputDebugString(_T("...\n")); } } //------------------------------------------------------------------------------ void Trace2(LPCTSTR format, ...) { va_list arg_ptr; LPTSTR buffer; int size; va_start(arg_ptr, format); size = _vsctprintf(format, arg_ptr); if (size 0) { return; } size = min(size + 1, 256); buffer = (LPTSTR)_malloca(sizeof(TCHAR) * size); size = _vsntprintf_s(buffer, size, _TRUNCATE, format, arg_ptr); va_end(arg_ptr); OutputDebugString(buffer); if (size 0) { OutputDebugString(_T("...\n")); } _freea(buffer); }